在阅读本文之前,你可能对以下资源贴有兴趣:
Selenium with Python官方文档
Python爬虫利器五之Selenium的用法
用python玩转selenium
selenium和phantomjs爬取动态网页
导航
页面交互
仅仅打开一个网页对我们来说是没有什么价值的,我们使用selenium的目的在于和网页进行交互,做一些真实用户会做的操作,比如点击确定,和输入账号密码登陆。
文本框
比如,给定一段html代码如下:
|
|
这段代码块要求我们提交密码,要做两件事情,第一,定位到这一个页面元素(密码文本框),第二,对这个元素输入密码内容。我们可以这样获取它:
如果有多个元素匹配了 xpath,它只会返回第一个匹配的元素。如果没有找到,那么会抛出 NoSuchElementException
的异常。
当你得到了这个元素,你可以向它提交文本内容:
又或者模拟点击某个按键。
你可以对任何获取到到元素使用 send_keys 方法,就像你在 GMail 里面点击发送键一样。不过这样会导致的结果就是输入的文本不会自动清除。所以输入的文本都会在原来的基础上继续输入。你可以用下面的方法来清除输入文本的内容。
选择框
WebDriver提供了一个Select类,可以很好处理选择框的交互问题。
|
|
WebDriver也提供了取消选项的方法,下面举例取消全部选项;
|
|
WebDriver也提供了返回全部选项内容的办法,下面举例得到全部选项:
|
|
提交表单
当我们把表单填好,下一步就是点击确定(submit),提交表单内容。
方法一,找到Submit
按钮,并调用Click()
方法:
|
|
方法二,WebDriver 中每个元素都有Submit
的方法可以调用,这表明可以单独提交某个元素。
|
|
WebDriver 会在表单中寻找它所在的表单,如果发现这个元素并没有被表单所包围,那么程序会抛出NoSuchElementException
的异常。
元素拖曳
要完成元素的拖拽,首先你需要指定被拖动的元素和拖动目标元素,然后利用 ActionChains 类来实现。
浏览窗口切换
弹窗处理
浏览历史
Cookies
Q & A
如何滚动窗口到页面底部?
你可以使用execute_script
方法执行页面上的javascript 脚本,所以你可以滚动到页面底部或者到任意位置。
以下是一个滚动到页面底部的例子:
|
|
DOM中的window对象有一个scrollTo 方法,scrollHeight是所有元素的共同属性,document.body.scrollHeight给出了整个页面的高度值。
如何对当前窗口截图
使用webdriver提供的save_screenshot 方法:
|
|
如何上传文件
选择<input type="file">
元素,然后在send_keys()
中输入文件所在路径。